Emacs
1. 개요
Emacs(이맥스)는 리스프(Lisp) 언어를 기반으로 구축된 확장 가능한 텍스트 편집기이자, 사용자가 직접 기능을 정의하고 수정할 수 있는 통합 컴퓨팅 환경이다. 1976년 리처드 스톨만(Richard Stallman)에 의해 처음 개발되었으며, 단순한 텍스트 입력을 넘어 파일 관리, 메일 클라이언트, 뉴스 리더, 터미널 에뮬레이터 등 다양한 기능을 하나의 인터페이스 내에서 구현할 수 있는 유연성을 제공한다. 현대의 Emacs는 GNU 프로젝트의 일환으로 개발되는 GNU Emacs를 의미하며, "편집 가능한 편집기"라는 정체성을 가지고 있다.
2. 주요 특징 및 철학
Emacs의 핵심 철학은 "사용자가 도구에 맞추는 것이 아니라, 도구를 사용자에게 맞춘다"는 것이다.
- 편집 가능한 편집기: Emacs의 거의 모든 기능은 Emacs Lisp(Elisp)으로 작성되어 있다. 사용자는 편집기를 종료하지 않고도 실행 중인 상태에서 함수를 수정하거나 새로운 기능을 추가하여 즉각적으로 반영할 수 있다.
- 통합 환경: 단순한 코드 편집을 넘어, 운영체제 수준의 다양한 작업을 수행할 수 있다. 예를 들어,
Dired를 통해 파일 시스템을 관리하고, Tramp를 통해 원격 서버의 파일을 로컬 파일처럼 편집하며, 내장 터미널을 통해 쉘 명령어를 실행한다.
- 자기 문서화(Self-documenting): Emacs는 내부에 방대한 도움말 시스템을 갖추고 있어, 외부 문서를 찾지 않고도 편집기 내에서 모든 명령어의 사용법과 함수 정의를 확인할 수 있다.
3. 핵심 동작 원리
Emacs는 내부적으로 Emacs Lisp(Elisp)이라는 Lisp 방언을 사용하여 동작한다. Elisp은 Emacs의 설정 파일뿐만 아니라 핵심 로직의 상당 부분을 담당하는 프로그래밍 언어이다.
Emacs는 '명령(Command)' 중심의 구조를 가진다. 사용자가 특정 키 조합을 입력하면, 해당 키에 바인딩된 Elisp 함수가 호출되는 방식이다.
| 구분 |
일반적인 텍스트 편집기 |
Emacs |
| 동작 방식 |
정해진 메뉴와 단축키 사용 |
함수(Command) 호출 및 키 바인딩 |
| 확장 방법 |
플러그인 설치 (제한적 API) |
Elisp 코드를 통한 직접 함수 정의 및 수정 |
| 상태 관리 |
모드(Mode) 전환이 드묾 |
메이저/마이너 모드를 통한 문맥별 최적화 |
| 설정 방식 |
GUI 설정창 또는 JSON/YAML 파일 |
.emacs 또는 <a href="/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/%EC%84%A4%EC%A0%95%20%ED%8C%8C%EC%9D%BC/init.el" class="wiki-link wiki-link-missing">init.el</a> 파일에 Lisp 코드 작성 |
Emacs는 작업의 성격에 따라 편집 환경을 최적화하는 '모드' 시스템을 사용한다.
* 메이저 모드(Major Mode): 파일 형식이나 작업 종류에 따른 기본 편집 방식을 결정한다. (예: Python 모드, Markdown 모드, Org 모드 등) 한 버퍼에는 하나의 메이저 모드만 활성화된다.
* 마이너 모드(Minor Mode): 메이저 모드와 상관없이 특정 기능을 선택적으로 추가한다. (예: 줄 번호 표시, 자동 완성, 대소문자 무시 검색 등) 여러 개의 마이너 모드를 동시에 활성화할 수 있다.
4. 설치 방법 및 초기 설정 가이드
설치 방법
- Linux: 대부분의 배포판 패키지 관리자를 통해 설치 가능하다. (예:
sudo apt install emacs 또는 sudo dnf install emacs)
- macOS: Homebrew를 통해 설치하는 것이 일반적이다. 공식 GUI 버전은
brew install --cask emacs로 설치하며, 더 세밀한 최적화를 원하는 파워 유저들은 emacs-plus나 emacs-mac 같은 커스텀 빌드 옵션을 사용하기도 한다.
- Windows: 공식 GNU Emacs 바이너리를 다운로드하여 설치한다.
초기 설정
Emacs 설치 후 사용자는 홈 디렉토리에 ~/.emacs.d/init.el 파일을 생성하여 개인 설정을 저장한다. 초기 설정 시 권장되는 기본 사항은 다음과 같다.
1. 툴바 및 메뉴바 제거: 화면 공간 확보를 위해 GUI 요소 제거
2. 패키지 관리자 설정: package.el 및 GNU ELPA/MELPA 저장소 설정
3. 기본 폰트 및 테마 설정: 가독성을 위한 폰트 지정 및 다크 모드 테마 적용
5. 사용법 및 학습 곡선
Emacs는 매우 강력하지만, 기존 편집기와 완전히 다른 조작 체계를 가지고 있어 학습 곡선이 가파른 편이다.
독특한 단축키 체계
Emacs의 단축키는 특수 키의 조합으로 이루어진다.
* C- (Control): Ctrl 키를 누른 상태에서 입력 (예: C-x는 Ctrl + x)
* M- (Meta): 주로 Alt 키를 누른 상태에서 입력 (예: M-x는 Alt + x)
* C-x C-s: 파일 저장 (Ctrl+x 누른 후 Ctrl+s)
* C-x C-c: Emacs 종료 (Ctrl+x 누른 후 Ctrl+c)
* M-x [명령어]: 키 바인딩이 없는 명령어를 직접 이름으로 호출 (Alt+x 누른 후 명령어 입력)
학습 단계 및 팁
- 튜토리얼 실행: Emacs 실행 후
C-h t를 눌러 내장 튜토리얼을 완료한다.
- 기본 이동 및 편집:
C-p(위), C-n(아래), C-a(줄 시작), C-e(줄 끝) 등 기본 이동키에 익숙해진다.
- 패닉 버튼(Panic Button) 기억하기: 잘못된 명령을 입력했거나 예상치 못한 상태에 빠졌을 때는
C-g (Ctrl+g)를 누른다. 이는 현재 진행 중인 모든 작업을 취소하고 기본 상태로 돌아가는 '탈출구' 역할을 한다.
- 점진적 설정: 처음부터 복잡한 설정 파일을 복사하기보다, 필요한 기능을 하나씩
init.el에 추가하며 학습하는 것이 권장된다.
Org-mode는 Emacs를 단순한 편집기에서 강력한 생산성 도구로 격상시킨 킬러 애플리케이션이다. 단순한 텍스트 파일(.org)을 기반으로 하여 다음과 같은 기능을 제공한다.
- 계층적 노트 작성: 별표(
*)를 이용해 무한한 깊이의 아웃라인 구조를 생성하고 접고 펼칠 수 있다.
- 할 일 관리(TODO List): 각 항목에
TODO, DONE 등의 상태를 부여하고 마감일(Deadline)과 예정일(Scheduled)을 설정하여 일정 관리가 가능하다.
- 표 계산 및 내보내기: 텍스트 기반의 표를 작성하고, 이를 HTML, LaTeX, PDF, Markdown 등으로 변환하여 전문적인 문서를 생성할 수 있다.
- 리터러트 프로그래밍(Literate Programming): 문서 내에 실제 실행 가능한 코드 블록을 삽입하고, 그 결과를 문서에 즉시 출력하는 기능을 통해 연구 노트나 기술 문서를 작성하는 데 최적화되어 있다.
Org-mode 작성 예시
* 프로젝트: 위키 문서 작성
** TODO Emacs 문서 초안 작성
DEADLINE: <2023-10-27 Fri>
- [ ] 개요 작성
- [ ] 설치 방법 업데이트
** DONE 리뷰어 피드백 반영
SCHEDULED: <2023-10-25 Wed>
** TODO 최종 검토 및 발행
* 아이디어 메모
- Elisp 학습 계획 세우기
- Org-mode 템플릿 만들기
7. 생태계 및 확장 기능
패키지 관리 시스템
package.el은 Emacs의 기본 패키지 관리자로, ELPA(Emacs Lisp Package Archive)와 커뮤니티 기반의 MELPA(Milkage ELPA) 저장소를 통해 수천 개의 외부 패키지를 쉽게 설치하고 업데이트할 수 있게 한다.
설정 프레임워크
순수 Emacs 설정의 어려움을 해결하기 위해, 미리 최적화된 설정 묶음(Distribution)이 존재한다.
* Doom Emacs: 성능 최적화에 집중하며, Vim의 키 바인딩(Evil-mode)을 기본으로 제공하는 현대적인 프레임워크이다.
* Spacemacs: "Vim과 Emacs의 장점을 결합"하는 것을 목표로 하며, mnemonic(기억하기 쉬운) 키 바인딩 체계를 제공한다.
Elisp 설정 예시
이 설정은 기본 GUI 환경을 기준으로 합니다.
;; 메뉴바, 툴바, 스크롤바 제거 (GUI 환경)
(setq inhibit-startup-screen t)
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
;; 패키지 저장소(MELPA) 설정
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
;; 기본 폰트 설정
(set-face-attribute 'default nil :font "NanumGothicCoding" :height 120)
;; 유용한 기본 설정 추가
(global-display-line-numbers-mode t) ; 줄 번호 표시
(setq-default indent-tabs-mode nil) ; 탭 대신 스페이스 사용
8. 실행 환경: GUI vs 터미널
Emacs는 실행 환경에 따라 두 가지 형태로 제공된다.
| 구분 |
GUI 버전 (Windowed) |
터미널 버전 (emacs -nw) |
| 표시 방식 |
독립적인 윈도우 창으로 실행 |
터미널 에뮬레이터 내에서 실행 |
| 입력 지원 |
마우스 클릭, 드래그, 폰트 렌더링 지원 |
키보드 중심, 터미널 폰트 및 색상 제한 |
| 성능 |
그래픽 렌더링 오버헤드 발생 가능 |
매우 가볍고 빠르게 실행됨 |
| 접근성 |
로컬 데스크톱 환경에서 편리함 |
SSH를 통한 원격 서버 접속 시 필수적 |
9. 다른 편집기와의 비교
Emacs는 범용성과 확장성 면에서 독보적이지만, 사용 목적에 따라 다른 도구가 더 적합할 수 있다.
Vim vs Emacs 상세 비교
| 비교 항목 |
Vim / Neovim |
Emacs |
| 핵심 철학 |
효율적인 텍스트 조작 (Modal Editing) |
확장 가능한 통합 환경 (Lisp Machine) |
| 조작 방식 |
모드 전환 (Normal $\leftrightarrow$ Insert) |
조합 키 (Chord) 중심 |
| 설정 언어 |
VimScript, Lua |
Emacs Lisp (Elisp) |
| 시작 속도 |
매우 빠름 |
상대적으로 느림 (설정 규모에 따라 다름) |
| 강점 |
빠른 편집 속도, 가벼움, 서버 환경 최적화 |
Org-mode, 무한한 확장성, 통합 워크플로우 |
종합 비교표
| 비교 항목 |
Emacs |
Vim / Neovim |
VS Code |
| 핵심 철학 |
확장 가능한 환경 (Lisp) |
효율적인 편집 (Modal) |
즉각적인 생산성 (IDE-like) |
| 학습 곡선 |
매우 높음 |
높음 |
낮음 |
| 확장성 |
최상 (언어 수준의 수정) |
높음 (Lua/VimScript) |
높음 (TypeScript/JS) |
| 시작 속도 |
느림 (설정 많을 시) |
매우 빠름 |
보통 |
| 주요 강점 |
Org-mode, 통합 환경 |
빠른 텍스트 조작, 가벼움 |
방대한 플러그인, 편리한 UI |
요약:
* Emacs는 편집기를 넘어 자신의 워크플로우 전체를 설계하고 싶은 파워 유저에게 적합하다.
* Vim은 터미널 환경에서 빠르게 텍스트를 수정하고 편집하는 효율성을 중시하는 사용자에게 적합하다.
* VS Code는 설정에 시간을 쏟기보다 즉시 개발에 착수하고 싶은 현대적인 개발 환경을 선호하는 사용자에게 적합하다.
# Emacs
## 1. 개요
**Emacs**(이맥스)는 리스프(Lisp) 언어를 기반으로 구축된 확장 가능한 텍스트 편집기이자, 사용자가 직접 기능을 정의하고 수정할 수 있는 통합 컴퓨팅 환경이다. 1976년 리처드 스톨만(Richard Stallman)에 의해 처음 개발되었으며, 단순한 텍스트 입력을 넘어 파일 관리, 메일 클라이언트, 뉴스 리더, 터미널 에뮬레이터 등 다양한 기능을 하나의 인터페이스 내에서 구현할 수 있는 유연성을 제공한다. 현대의 Emacs는 GNU 프로젝트의 일환으로 개발되는 GNU Emacs를 의미하며, "편집 가능한 편집기"라는 정체성을 가지고 있다.
## 2. 주요 특징 및 철학
Emacs의 핵심 철학은 **"사용자가 도구에 맞추는 것이 아니라, 도구를 사용자에게 맞춘다"**는 것이다.
* **편집 가능한 편집기:** Emacs의 거의 모든 기능은 Emacs Lisp(Elisp)으로 작성되어 있다. 사용자는 편집기를 종료하지 않고도 실행 중인 상태에서 함수를 수정하거나 새로운 기능을 추가하여 즉각적으로 반영할 수 있다.
* **통합 환경:** 단순한 코드 편집을 넘어, 운영체제 수준의 다양한 작업을 수행할 수 있다. 예를 들어, `Dired`를 통해 파일 시스템을 관리하고, `Tramp`를 통해 원격 서버의 파일을 로컬 파일처럼 편집하며, 내장 터미널을 통해 쉘 명령어를 실행한다.
* **자기 문서화(Self-documenting):** Emacs는 내부에 방대한 도움말 시스템을 갖추고 있어, 외부 문서를 찾지 않고도 편집기 내에서 모든 명령어의 사용법과 함수 정의를 확인할 수 있다.
## 3. 핵심 동작 원리
Emacs는 내부적으로 **Emacs Lisp(Elisp)**이라는 Lisp 방언을 사용하여 동작한다. Elisp은 Emacs의 설정 파일뿐만 아니라 핵심 로직의 상당 부분을 담당하는 프로그래밍 언어이다.
### 명령과 키 바인딩
Emacs는 '명령(Command)' 중심의 구조를 가진다. 사용자가 특정 키 조합을 입력하면, 해당 키에 바인딩된 Elisp 함수가 호출되는 방식이다.
| 구분 | 일반적인 텍스트 편집기 | Emacs |
| :--- | :--- | :--- |
| **동작 방식** | 정해진 메뉴와 단축키 사용 | 함수(Command) 호출 및 키 바인딩 |
| **확장 방법** | 플러그인 설치 (제한적 API) | Elisp 코드를 통한 직접 함수 정의 및 수정 |
| **상태 관리** | 모드(Mode) 전환이 드묾 | 메이저/마이너 모드를 통한 문맥별 최적화 |
| **설정 방식** | GUI 설정창 또는 JSON/YAML 파일 | `.emacs` 또는 `init.el` 파일에 Lisp 코드 작성 |
### 메이저 모드와 마이너 모드
Emacs는 작업의 성격에 따라 편집 환경을 최적화하는 '모드' 시스템을 사용한다.
* **메이저 모드(Major Mode):** 파일 형식이나 작업 종류에 따른 기본 편집 방식을 결정한다. (예: Python 모드, Markdown 모드, Org 모드 등) 한 버퍼에는 하나의 메이저 모드만 활성화된다.
* **마이너 모드(Minor Mode):** 메이저 모드와 상관없이 특정 기능을 선택적으로 추가한다. (예: 줄 번호 표시, 자동 완성, 대소문자 무시 검색 등) 여러 개의 마이너 모드를 동시에 활성화할 수 있다.
## 4. 설치 방법 및 초기 설정 가이드
### 설치 방법
* **Linux:** 대부분의 배포판 패키지 관리자를 통해 설치 가능하다. (예: `sudo apt install emacs` 또는 `sudo dnf install emacs`)
* **macOS:** Homebrew를 통해 설치하는 것이 일반적이다. 공식 GUI 버전은 `brew install --cask emacs`로 설치하며, 더 세밀한 최적화를 원하는 파워 유저들은 `emacs-plus`나 `emacs-mac` 같은 커스텀 빌드 옵션을 사용하기도 한다.
* **Windows:** 공식 GNU Emacs 바이너리를 다운로드하여 설치한다.
### 초기 설정
Emacs 설치 후 사용자는 홈 디렉토리에 `~/.emacs.d/init.el` 파일을 생성하여 개인 설정을 저장한다. 초기 설정 시 권장되는 기본 사항은 다음과 같다.
1. **툴바 및 메뉴바 제거:** 화면 공간 확보를 위해 GUI 요소 제거
2. **패키지 관리자 설정:** `package.el` 및 GNU ELPA/MELPA 저장소 설정
3. **기본 폰트 및 테마 설정:** 가독성을 위한 폰트 지정 및 다크 모드 테마 적용
## 5. 사용법 및 학습 곡선
Emacs는 매우 강력하지만, 기존 편집기와 완전히 다른 조작 체계를 가지고 있어 학습 곡선이 가파른 편이다.
### 독특한 단축키 체계
Emacs의 단축키는 특수 키의 조합으로 이루어진다.
* **C- (Control):** `Ctrl` 키를 누른 상태에서 입력 (예: `C-x`는 `Ctrl + x`)
* **M- (Meta):** 주로 `Alt` 키를 누른 상태에서 입력 (예: `M-x`는 `Alt + x`)
* **C-x C-s:** 파일 저장 (Ctrl+x 누른 후 Ctrl+s)
* **C-x C-c:** Emacs 종료 (Ctrl+x 누른 후 Ctrl+c)
* **M-x [명령어]:** 키 바인딩이 없는 명령어를 직접 이름으로 호출 (Alt+x 누른 후 명령어 입력)
### 학습 단계 및 팁
1. **튜토리얼 실행:** Emacs 실행 후 `C-h t`를 눌러 내장 튜토리얼을 완료한다.
2. **기본 이동 및 편집:** `C-p`(위), `C-n`(아래), `C-a`(줄 시작), `C-e`(줄 끝) 등 기본 이동키에 익숙해진다.
3. **패닉 버튼(Panic Button) 기억하기:** 잘못된 명령을 입력했거나 예상치 못한 상태에 빠졌을 때는 **`C-g` (Ctrl+g)**를 누른다. 이는 현재 진행 중인 모든 작업을 취소하고 기본 상태로 돌아가는 '탈출구' 역할을 한다.
4. **점진적 설정:** 처음부터 복잡한 설정 파일을 복사하기보다, 필요한 기능을 하나씩 `init.el`에 추가하며 학습하는 것이 권장된다.
## 6. Org-mode의 기능과 활용법
**Org-mode**는 Emacs를 단순한 편집기에서 강력한 생산성 도구로 격상시킨 킬러 애플리케이션이다. 단순한 텍스트 파일(`.org`)을 기반으로 하여 다음과 같은 기능을 제공한다.
* **계층적 노트 작성:** 별표(`*`)를 이용해 무한한 깊이의 아웃라인 구조를 생성하고 접고 펼칠 수 있다.
* **할 일 관리(TODO List):** 각 항목에 `TODO`, `DONE` 등의 상태를 부여하고 마감일(Deadline)과 예정일(Scheduled)을 설정하여 일정 관리가 가능하다.
* **표 계산 및 내보내기:** 텍스트 기반의 표를 작성하고, 이를 HTML, LaTeX, PDF, Markdown 등으로 변환하여 전문적인 문서를 생성할 수 있다.
* **리터러트 프로그래밍(Literate Programming):** 문서 내에 실제 실행 가능한 코드 블록을 삽입하고, 그 결과를 문서에 즉시 출력하는 기능을 통해 연구 노트나 기술 문서를 작성하는 데 최적화되어 있다.
### Org-mode 작성 예시
```org
* 프로젝트: 위키 문서 작성
** TODO Emacs 문서 초안 작성
DEADLINE: <2023-10-27 Fri>
- [ ] 개요 작성
- [ ] 설치 방법 업데이트
** DONE 리뷰어 피드백 반영
SCHEDULED: <2023-10-25 Wed>
** TODO 최종 검토 및 발행
* 아이디어 메모
- Elisp 학습 계획 세우기
- Org-mode 템플릿 만들기
```
## 7. 생태계 및 확장 기능
### 패키지 관리 시스템
`package.el`은 Emacs의 기본 패키지 관리자로, **ELPA**(Emacs Lisp Package Archive)와 커뮤니티 기반의 **MELPA**(Milkage ELPA) 저장소를 통해 수천 개의 외부 패키지를 쉽게 설치하고 업데이트할 수 있게 한다.
### 설정 프레임워크
순수 Emacs 설정의 어려움을 해결하기 위해, 미리 최적화된 설정 묶음(Distribution)이 존재한다.
* **Doom Emacs:** 성능 최적화에 집중하며, Vim의 키 바인딩(Evil-mode)을 기본으로 제공하는 현대적인 프레임워크이다.
* **Spacemacs:** "Vim과 Emacs의 장점을 결합"하는 것을 목표로 하며, mnemonic(기억하기 쉬운) 키 바인딩 체계를 제공한다.
### Elisp 설정 예시
이 설정은 기본 GUI 환경을 기준으로 합니다.
```elisp
;; 메뉴바, 툴바, 스크롤바 제거 (GUI 환경)
(setq inhibit-startup-screen t)
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
;; 패키지 저장소(MELPA) 설정
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
;; 기본 폰트 설정
(set-face-attribute 'default nil :font "NanumGothicCoding" :height 120)
;; 유용한 기본 설정 추가
(global-display-line-numbers-mode t) ; 줄 번호 표시
(setq-default indent-tabs-mode nil) ; 탭 대신 스페이스 사용
```
## 8. 실행 환경: GUI vs 터미널
Emacs는 실행 환경에 따라 두 가지 형태로 제공된다.
| 구분 | GUI 버전 (Windowed) | 터미널 버전 (`emacs -nw`) |
| :--- | :--- | :--- |
| **표시 방식** | 독립적인 윈도우 창으로 실행 | 터미널 에뮬레이터 내에서 실행 |
| **입력 지원** | 마우스 클릭, 드래그, 폰트 렌더링 지원 | 키보드 중심, 터미널 폰트 및 색상 제한 |
| **성능** | 그래픽 렌더링 오버헤드 발생 가능 | 매우 가볍고 빠르게 실행됨 |
| **접근성** | 로컬 데스크톱 환경에서 편리함 | SSH를 통한 원격 서버 접속 시 필수적 |
## 9. 다른 편집기와의 비교
Emacs는 범용성과 확장성 면에서 독보적이지만, 사용 목적에 따라 다른 도구가 더 적합할 수 있다.
### Vim vs Emacs 상세 비교
| 비교 항목 | Vim / Neovim | Emacs |
| :--- | :--- | :--- |
| **핵심 철학** | 효율적인 텍스트 조작 (Modal Editing) | 확장 가능한 통합 환경 (Lisp Machine) |
| **조작 방식** | 모드 전환 (Normal $\leftrightarrow$ Insert) | 조합 키 (Chord) 중심 |
| **설정 언어** | VimScript, Lua | Emacs Lisp (Elisp) |
| **시작 속도** | 매우 빠름 | 상대적으로 느림 (설정 규모에 따라 다름) |
| **강점** | 빠른 편집 속도, 가벼움, 서버 환경 최적화 | Org-mode, 무한한 확장성, 통합 워크플로우 |
### 종합 비교표
| 비교 항목 | Emacs | Vim / Neovim | VS Code |
| :--- | :--- | :--- | :--- |
| **핵심 철학** | 확장 가능한 환경 (Lisp) | 효율적인 편집 (Modal) | 즉각적인 생산성 (IDE-like) |
| **학습 곡선** | 매우 높음 | 높음 | 낮음 |
| **확장성** | 최상 (언어 수준의 수정) | 높음 (Lua/VimScript) | 높음 (TypeScript/JS) |
| **시작 속도** | 느림 (설정 많을 시) | 매우 빠름 | 보통 |
| **주요 강점** | Org-mode, 통합 환경 | 빠른 텍스트 조작, 가벼움 | 방대한 플러그인, 편리한 UI |
**요약:**
* **Emacs**는 편집기를 넘어 자신의 워크플로우 전체를 설계하고 싶은 파워 유저에게 적합하다.
* **Vim**은 터미널 환경에서 빠르게 텍스트를 수정하고 편집하는 효율성을 중시하는 사용자에게 적합하다.
* **VS Code**는 설정에 시간을 쏟기보다 즉시 개발에 착수하고 싶은 현대적인 개발 환경을 선호하는 사용자에게 적합하다.